package com.mywork.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mywork.dao.DrugMapper;
import com.mywork.dao.SaveDrugListMapper;
import com.mywork.dao.SaveDrugViewMapper;
import com.mywork.po.Drug;
import com.mywork.po.Page;
import com.mywork.po.SaveDrugList;
import com.mywork.po.SaveDrugView;

@Service
public class DrugService {
	@Autowired
	DrugMapper drugDao;
	
	@Autowired
	SaveDrugViewMapper sdvDao;
	
	@Autowired
	SaveDrugListMapper saveDrugListDao;

	public List<Drug> getDrugList(Page page) {
		// TODO 自动生成的方法存根
		return drugDao.selectForLimit(page.getPageNo()*page.getPageSize(),page.getPageSize());
	}

	public void addDrug(Drug drug,String userId) {
		// TODO 自动生成的方法存根
		//添加了药物表，也要添加药物进货表
		drugDao.insert(drug);
		SaveDrugList sdl = new SaveDrugList();
		sdl.setDate(new Date());
		sdl.setDrugcount(drug.getDrugcount());
		
		sdl.setDrugid(drugDao.selectMaxId());
		sdl.setUserid(userId);
		
		saveDrugListDao.insert(sdl);
		
	}

	public void delectDrug(String drugId) {
		// TODO 自动生成的方法存根
		drugDao.deleteByPrimaryKey(Long.valueOf(drugId).longValue());
	}

	public void updateDrug(Drug drug) {
		// TODO 自动生成的方法存根
		drugDao.updateByPrimaryKeySelective(drug);
	}

	public List<Drug> getDrugLists() {
		// TODO 自动生成的方法存根
		return drugDao.selectAll();
	}

	public List<Drug> getAllFirstLevelDrug() {
		// TODO 自动生成的方法存根
		return drugDao.getAllFirstLevlDrug();
	}

	public List<Drug> getNextLevelDrugList(String drugId) {
		// TODO 自动生成的方法存根
		return drugDao.getNextLevelDrugList(drugId);
	}
	
	public Drug getDrugByDrugId(String drugId){
		return drugDao.selectByPrimaryKey(Long.valueOf(drugId).longValue());
	}

	public int getCountOfDrugList() {
		// TODO 自动生成的方法存根
		return drugDao.getCountOfDrugList();
	}

	public List<Drug> getDrugByDrugNameOrMnemonicCode(
			String drugNameOrMnemonicCode) {
		// TODO 自动生成的方法存根
		return drugDao.selectByDrugNameOrMnemonicCode(drugNameOrMnemonicCode);
	}

	public void dismount(Long rowDrugId, String dismountNum, Drug drug) {
		// TODO 自动生成的方法存根
		Drug rowDrug=drugDao.selectByPrimaryKey(rowDrugId);
		Drug newDrug = drugDao.selectByPrimaryKey(rowDrugId);
		//原来的记录减少
		rowDrug.setDrugcount(rowDrug.getDrugcount()-Integer.valueOf(dismountNum).intValue());
		drugDao.updateByPrimaryKey(rowDrug);
		//添加新的记录
		newDrug.setDrugid(null);
		newDrug.setDrugcount(drug.getDrugcount());
		newDrug.setType(drug.getType());
		newDrug.setPrice(drug.getPrice());
		newDrug.setCost(drug.getCost());
		newDrug.setDeadnumber(drug.getDeadnumber());
		
		drugDao.insert(newDrug);
	}

	public List<Drug> getDrugWhichNotice(Page page) {
		// TODO 自动生成的方法存根
		return drugDao.getDrugWhichNotice(page.getPageSize()*page.getPageNo(),page.getPageSize());
	}

	public int getCountOfNoticeDrugList() {
		// TODO 自动生成的方法存根
		return drugDao.getCountOfNoticeDrugList();
	}
	/**
	 * 获取全部过去药品列表
	 * @param page
	 * @return
	 */
	public List<Drug> getExpiredDrugList(Page page) {
		// TODO 自动生成的方法存根
		return drugDao.getExpiredDrugList(page.getPageNo()*page.getPageSize(),page.getPageSize());
	}
	/**
	 * 获取全部过期药物的数量
	 * @return
	 */
	public int getCountOfExpiredDrugList() {
		// TODO 自动生成的方法存根
		return drugDao.getCountOfExpiredDrugList();
	}

	public void addDrugForHadHad(Drug drug, String userid,String addCount) {
		// TODO 自动生成的方法存根
		
		drugDao.updateForAddSave(drug.getDrugid(),addCount);
		SaveDrugList sdl = new SaveDrugList();
		sdl.setDate(new Date());
		sdl.setDrugcount(Integer.valueOf(addCount).intValue());
		
		sdl.setDrugid(drug.getDrugid());
		sdl.setUserid(userid);
		
		saveDrugListDao.insert(sdl);
	}

	public List<SaveDrugView> getSaveDrugList(Page page) {
		// TODO 自动生成的方法存根
		return sdvDao.selectAll(page.getPageNo()*page.getPageSize(),page.getPageSize());
	}

	public int getCountOfSaveDrugList() {
		// TODO 自动生成的方法存根
		return sdvDao.getCountOfList();
	}

	public List<SaveDrugView> getSaveDrugListByDrugIdOrCode(Page page,String var) {
		// TODO 自动生成的方法存根
		var = "%"+var+"%";
		return sdvDao.selectAllByDrugIdOrCode(page.getPageNo()*page.getPageSize(),page.getPageSize(),var);
	}
	
	
}
